package com.heima.springbootdemo01.controller;

import com.heima.springbootdemo01.bean.User;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

@RestController
public class UserController {

    //?前面是请求的路径，后面是本次请求的参数
    //springmvc已经对参数进行了封装，因此我们可以直接使用基本数据类型接收参数
    //http://localhost:8080/user/param1
    //?name=xiongmengxian&age=19
    @RequestMapping("/user/param1")
    public String param1(String name, int age) {
        return "name:" + name + ", age:" + age;
    }

    //使用user对象接收
    //url：http://localhost:8080/user/param2?name=xiong&age=22&addr=beijing

    @RequestMapping("/user/param2")
    public String param2(User user) {
        return "name:" + user.getName() + ", age:" + user.getAge() + ", addr:" + user.getAddr();
    }

    //404请求路径不存在  405请求方式不匹配 get查询 put修改  post增加 delete请求删除

    //使用数组接收参数
    @GetMapping("/user/param3")
    public String param3(String[] name) {
        return "name1:" + name[0]+"name2"+name[1] ;
    }

    //使用集合接收参数
    @GetMapping("/user/param4")
    public String param4(@RequestParam List<String>hobby) {
         return "集合"+hobby;
    }

    //接收日期参数 400请求参数不匹配 如果不设置日期格式，没办法封装给date
    @GetMapping("/user/param5")
    public String param5(@DateTimeFormat(pattern = "yyyy-MM-dd") Date date) {
        return "日期"+date;
    }

    //接收json参数  RequestBody接收json参数转换成user对象
    @PostMapping ("/user/param6")
    public String param6(@RequestBody User user) {
        return "json"+user;
    }

    //路径参数
    @GetMapping("/user/{id}")
    public String param7(@PathVariable("id") Integer id) {
        return "路径参数"+id;
    }


    //-----请求结束了，如何响应？
    @RequestMapping("/resp")
    public User resp(){
        return new User(1,"xiong",22,"beijing");
    }
    @GetMapping("/resp2")
    public List<User>resp2(){
        List<User>list=new ArrayList<>();
        User user1=new User(1,"xiong",22,"beijing");
        list.add(user1);
        return list.stream().toList();
    }





}
